package com.learner.ucenter.service;

import com.learner.pojo.trade.dto.MemberDto;
import com.learner.pojo.user.User;
import com.learner.pojo.user.vo.DelFenZuRequestVo;
import com.learner.pojo.user.vo.EditFenZuRequestVo;
import com.learner.pojo.user.vo.LoginVo;
import com.learner.pojo.user.vo.ModifyFriendBeiZhuRequestVo;
import com.learner.pojo.user.vo.ModifyFriendFenZuRequestVo;
import com.learner.pojo.user.vo.NewFenZuRequestVo;
import com.learner.pojo.user.vo.RegisterVo;
import com.learner.pojo.user.vo.SearchRequestVo;
import com.learner.pojo.user.vo.UpdateUserConfigureRequestVo;
import com.learner.pojo.user.vo.UpdateUserInfoRequestVo;
import com.learner.pojo.user.vo.UpdateUserPwdRequestVo;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public interface UserService {


    /**
     * 注册
     *
     * @param registerVo 封装注册的数据
     * @return 请求结果
     */
    Map<String, Object> register(RegisterVo registerVo);

    /**
     * 注册
     *
     * @param loginVo 参数
     * @return 请求结果
     */
    Map<String, Object> login(LoginVo loginVo);

    /**
     * @Description: 根据id获取用户信息
     * @Author: ice2020x
     * @Date: 2021/11/11
     */
    MemberDto getMemberDtoIdByMemberId(String memberId);


    /**
     * @Description: 获取验证码
     * @Author: ice2020x
     * @Date: 2021/11/11
     */
    void getVerificationCode(HttpServletRequest request, HttpServletResponse response);

    /**
     * 获取用户消息
     *
     * @param userId  用户id
     * @param request request
     * @return r
     */
    User getUserInfo(String userId, HttpServletRequest request);

    /**
     * 获取用户消息
     *
     * @param userId  用户id
     * @return 用户信息
     */
    User getUserInfo(String userId);

    /**
     * 添加分组
     *
     * @param requestVo 参数
     */
    void addNewFenZu(NewFenZuRequestVo requestVo);

    /**
     * 修改用户备注
     *
     * @param requestVo 参数
     * @param userId    用户id
     */
    void modifyFriendBeiZhu(ModifyFriendBeiZhuRequestVo requestVo, String userId);

    /**
     * 修改好友分组
     *
     * @param requestVo 参数
     * @return 请求结果
     */
    void modifyFriendFenZu(ModifyFriendFenZuRequestVo requestVo);

    /**
     * 删除分组
     *
     * @param requestVo 参数
     */
    void deleteFenZu(DelFenZuRequestVo requestVo);

    /**
     * 修改分组名
     *
     * @param requestVo 参数
     */
    void editFenZu(EditFenZuRequestVo requestVo);

    /**
     * 修改上线时间
     *
     * @param uid        用户id
     * @param onlineTime 时间
     */
    void updateOnlineTime(long onlineTime, String uid);

    /**
     * 修改用户的个性化设置
     *
     * @param requestVo 参数
     * @param userId    userId
     * @return 请求结果
     */
    boolean updateUserConfigure(UpdateUserConfigureRequestVo requestVo, String userId);

    /**
     * 更新用户信息
     *
     * @param requestVo 参数
     */
    void updateUserInfo(UpdateUserInfoRequestVo requestVo);

    /**
     * 修改用户密码
     *
     * @param requestVo 参数
     */
    void updateUserPwd(UpdateUserPwdRequestVo requestVo);

    /**
     * 获取用户消息
     *
     * @return 请求结果
     */
    List<User> getUserList();

    /**
     * 根据注册时间获取用户
     *
     * @param lt 时间
     * @param rt 时间
     * @return 请求结果
     */
    List<User> getUsersBySignUpTime(String lt, String rt);

    /**
     * 更改用户状态
     *
     * @param uid    用户id
     * @param status 状态
     */
    void changeUserStatus(String uid, Integer status);

    /**
     * 搜索用户
     *
     * @param requestVo requestVo
     * @param userId    用户id
     * @return 结果
     */
    HashMap<String, Object> searchUser(SearchRequestVo requestVo, String userId);
}
